// pages/components/pagination.js
// 引入npm下载的 miniprogram-computed
const computedBehavior = require('miniprogram-computed').behavior
Component({
    behaviors: [computedBehavior],
    /**
     * 组件的属性列表
     */
    properties: {
        pageNo: {
            type: Number,
            value: 1
        },
        pageSize: {
            type: Number,
            value: 8
        },
        total: {
            type: Number,
            value: 10
        },
        continues: {
            type: Number,
            value: 5
        },
    },

    /**
     * 组件的初始数据
     */
    data: {
        // 默认是空白
        onepage: '',
        jumppage: ''
    },

    /**
     * 组件的方法列表
     */
    computed: {
        totalPage(data) {
            // console.log(data);
            return Math.ceil(data.total / data.pageSize);
        },

        // *计算出连续页码的起始数字与结束的数字【连续的页码数字：至少是5】
        startNumAndEndNum(data) {
            const { continues, pageNo, totalPage } = data; // 解构了
            // 先定义两个变量存储起始数字与结束数字
            let start = 0,
                end = 0;
            // *连续页码数字是5【至少5页】，如果出现不正常现象【不够5页，即总页数 < 连续页码5】
            if (continues > totalPage) {
                start = 1;
                end = totalPage;
            } else {
                // 正常现象【连续的页码5，但是你的总页数一定是大于5的】 parseInt()返回一个十进制的整数【一个数字的参数可同Math.floor】
                start = pageNo - parseInt(continues / 2);
                end = pageNo + parseInt(continues / 2);
                // 把出现不正常的现象【start数字出现0|负数，continues=5，pageNo=1、2的时候】
                if (start < 1) {
                    start = 1;
                    end = continues;
                }
                // 把出现不正常的现象【end数字大于总页码，continues=5，totalPage=30，pageNo=29、30的时候】
                if (end > totalPage) {
                    start = totalPage - continues + 1;
                    end = totalPage;
                }
            }
            return { start, end };
        },
    },
    methods: {
        jump(e) {
            let page = e.currentTarget.dataset.page
            this.setData({
                pageNo: page
            })
            this.triggerEvent('pagiclick', e)
            // console.log(this.data);
            // console.log(this.data.totalPage);
        },

        getpage(e) {
            this.setData({
                jumppage: e.detail.value,
            })
        },

        // tap事件会先于blur事件触发，导致直接点击跳转会无法获取相应值
        // 可以使用input事件
        toOne(e) {
            let page = e.currentTarget.dataset.page
            if (page == '') return
            else if (page > this.data.totalPage) {
                this.setData({
                    onepage: ''
                })
                return
            }
            this.setData({
                pageNo: page,
                onepage: ''
            })
            this.triggerEvent('pagiclick', e)
            // console.log(page);
        }
    }
})